package c2.group.business.tb;

import c2.group.business.base.GroupSubModule;
import c2.group.business.tb.boss.TBBossStatus;
import c2.group.business.tb.ko.TBKoStatus;
import cate.game.pvp.throne.data.ko.TBKoCurBet;
import cate.game.pvp.throne.msg.*;
import easy.java.dev.note.NoteClass;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@NoteClass("王座争霸-group消息分发模块")
public class TBGroupMessageModule extends GroupSubModule<TBModule> {


	/** 同步全量数据 */
	public void noticeAll(TBAllDataNotice notice) {
		try {
			log.info("组服向游戏服发送[王座争霸]全量数据");
			useRpcSend().fireAndForgetGameInGroupTemplate(TBInnerMsg.NOTICE_ALL, parent.code(), notice);
		} catch (Exception e) {
			log.error("", e);
		}
	}

	/** 同步部分分组数据 */
	public void noticePart(TBPartDataNotice notice){
		try {
			log.info("组服向游戏服发送[王座争霸]部分数据");
			useRpcSend().fireAndForgetGameInGroupTemplate(TBInnerMsg.NOTICE_PART, parent.code(), notice);
		} catch (Exception e) {
			log.error("", e);
		}
	}

	/** 同步淘汰赛基础数据 */
	public void noticeKoBase(TBKoStatus status){
		try {
			log.info("组服向游戏服发送[王座争霸]淘汰赛基础数据");
			useRpcSend().fireAndForgetGameInGroupTemplate(TBInnerMsg.NOTICE_KO_BASE, parent.code(), TBKoBaseNotice.of(status.toDTO()));
		} catch (Exception e) {
			log.error("", e);
		}
	}

	/** 同步竞猜数据 */
	public void noticeKoBet(TBKoCurBet curBet){
		try {
			log.info("组服向游戏服发送[王座争霸]竞猜数据");
			useRpcSend().fireAndForgetGameInGroupTemplate(TBInnerMsg.NOTICE_BET, parent.code(), TBKoBetNotice.of(curBet));
		} catch (Exception e) {
			log.error("", e);
		}
	}

	/** 同步冠军boss数据 */
	public void noticeBoss(TBBossStatus status){
		try {
			log.info("组服向游戏服发送[王座争霸]冠军boss数据");
			useRpcSend().fireAndForgetGameInGroupTemplate(TBInnerMsg.NOTICE_BOSS, parent.code(), TBBossNotice.of(status.toDTO()));
		} catch (Exception e) {
			log.error("", e);
		}
	}

}
